package users

import (
	v1 "ginx/api/users/v1"
	"ginx/internal/global"
	"ginx/internal/global/response"

	"github.com/gin-gonic/gin"
)

func (c *ControllerV1) Register(ctx *gin.Context) {
	// 检查请求体长度是否为 0,如果为零直接返回
	// 因为请求体为空,所以无法解析参数
	if ctx.Request.ContentLength == 0 {
		response.RES.JSON(ctx, response.ERROR_INVALID_PARAM)
		return
	}

	// 解析参数
	var req *v1.RegisterReq
	err := ctx.ShouldBind(&req)
	if err != nil {
		response.RES.JSON(ctx, response.ERROR_REQUEST_PARAM, response.WithMsg(err.Error()))
		return
	}
	// 获取otpsecret
	secret, err := global.R.Get(ctx, req.Email).Result()
	if err != nil {
		response.RES.JSON(ctx, response.ERROR_OTP_GET_REDIS)
		return
	}

	// 注册
	err = c.users.Register(ctx, secret, req.Email, req.Code)
	if err != nil {
		response.RES.JSON(ctx, response.ERROR_USER_REGISTER, response.WithMsg(err.Error()))
		return
	}
	response.RES.JSON(ctx, response.OK, response.WithMsg("注册成功"))
}
